/**
 * Licensee: DuKe TeAm
 * License Type: Purchased
 */
package test;

import org.orm.*;

public class AgregarDatosPrueba {
	public void createTestData() throws PersistentException {
		PersistentTransaction t = orm.PinpassPersistentManager.instance()
				.getSession().beginTransaction();
		orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
		try {

			
			for (int j = 0; j < 10; j++) {
				
				//Crear cliente
				orm.dao.ClienteDAO lormClienteDAO = lDAOFactory.getClienteDAO();
				orm.Cliente cliente = lormClienteDAO.createCliente();

				cliente.setNombre("NombrePersona"+j);
				cliente.setRut("ejemplorut-"+j);
				cliente.setPassword("12345");
				lormClienteDAO.save(cliente);

				//Crear tarjeta
				orm.dao.TarjetaDAO lormTarjetaDAO = lDAOFactory.getTarjetaDAO();
				orm.Tarjeta tarjeta = lormTarjetaDAO.createTarjeta();
				tarjeta.setCod(String.valueOf(j));
				tarjeta.setCliente_idcliente(cliente);
				lormTarjetaDAO.save(tarjeta);

				//Coordenada tarjeta
				orm.dao.CoordenadaDAO lormCoordenadaDAO = lDAOFactory.getCoordenadaDAO();


				//Crear coordenadas
				for (int i = 0; i < 50; i++) {
					orm.Coordenada coordenada = lormCoordenadaDAO
							.createCoordenada();
					coordenada.setValor(random(0, 99));
					coordenada.setTarjeta_idtarjeta(tarjeta);
					lormCoordenadaDAO.save(coordenada);
				}
			}
			// COMMIT
			// commit only if tx still hasn't been committed yet (by hibernate)
			if (!t.wasCommitted())
			    t.commit();


		} catch (Exception e) {
			t.rollback();
		}

	}

	public static void main(String[] args) {
		try {
			AgregarDatosPrueba createPinpassData = new AgregarDatosPrueba();
			try {
				createPinpassData.createTestData();
			} finally {
				orm.PinpassPersistentManager.instance()
						.disposePersistentManager();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private int random(int limiteInf, int limiteSup) {
		java.util.Random r = new java.util.Random();
		return (r.nextInt(limiteSup + 1 - limiteInf) + limiteInf);
	}
}